package cn.xique.module.weixin.web.configrelation;

import cn.xique.module.weixin.web.IbeanBaseController;
import com.jfinal.core.paragetter.Para;
import com.jfinal.json.FastJson;
import com.jfinal.kit.HttpKit;
import com.jfinal.kit.Ret;
import com.jfinal.weixin.sdk.api.ApiResult;
import com.jfinal.weixin.sdk.api.shakearound.ShakeAroundDeviceApi;
import com.jfinal.weixin.sdk.api.shakearound.bean.DeviceIdentifier;
import io.jboot.web.controller.JbootController;
import io.jboot.web.controller.annotation.RequestMapping;
import io.jpress.module.ibeacon.model.IbeaconPage;
import org.json.JSONArray;
import org.json.JSONObject;

import static io.jboot.web.JbootRequestContext.getRequest;

@RequestMapping("/Config")
public class ConfigController extends IbeanBaseController {

    /**
     ---------------------------------配置设备与门店的关联关系--------------------------------
     支持创建门店后直接关联在设备上，无需为审核通过状态，摇周边后台自动更新门店的最新信息和状态。
     @param deviceIdentifier 设备信息
     @param poiId 设备关联的门店ID，关联门店后，在门店1KM的范围内有优先摇出信息的机会。当值为0时，将清除设备已关联的门店ID。门店相关信息具体可查看：https://mp.weixin.qq.com/zh_CN/htmledition/comm_htmledition/res/store_manage/store_manage_file.zip
     @return {ApiResult}
     */


    /**
     * 绑定清除都是他
     配置设备与页面的关联关系。配置时传入该设备需要关联的页面的id列表（该设备原有的关联关系将被直接清除）；
     页面的id列表允许为空，当页面的id列表为空时则会清除该设备的所有关联关系。配置完成后，在此设备的信号范围内，即可摇出关联的页面信息。
     在申请设备ID后，可直接使用接口直接配置页面。
     若设备配置多个页面，则随机出现页面信息。一个设备最多可配置30个关联页面。

     @param deviceIdentifier 设备信息
     @param pageIds 待关联的页面列表
     @return {ApiResult}
     */
    public void BindPage(@Para("deviceIdentifier") DeviceIdentifier deviceIdentifier, @Para("pageIds")int[] pageIds){
        String jsonString = HttpKit.readData(getRequest());
        JSONObject jsonObject = new JSONObject(jsonString);
        DeviceIdentifier deviceIdentifier1 = FastJson.getJson().parse(jsonObject.getJSONObject("deviceIdentifier").toString(), DeviceIdentifier.class);
        JSONArray jsonArray = jsonObject.getJSONArray("pageIds");
        pageIds = new int[jsonArray.length()];
        for (int i=0; i<jsonArray.length(); i++){
            pageIds[i] = jsonArray.getInt(i);
        }
        ApiResult apiResult = ShakeAroundDeviceApi.bindPage(deviceIdentifier,  pageIds);
        renderJson(Ret.ok().set("success", true).set("result", apiResult));

    }

    /**
     查询设备与页面的关联关系。
     提供两种查询方式，可指定页面ID分页查询该页面所关联的所有的设备信息；
     也可根据设备ID或完整的UUID、Major、Minor查询该设备所关联的所有页面信息。
//     @param deviceIdentifier 设备信息
//     @param type 类别 查询方式。1： 查询设备的关联关系；2：查询页面的关联关系
     @return {ApiResult}
     */
    public  void  SearchEelation() {
        String jsonString = HttpKit.readData(getRequest());
        JSONObject jsonObject = new JSONObject(jsonString);
        DeviceIdentifier deviceIdentifier = FastJson.getJson().parse(jsonObject.getJSONObject("deviceIdentifier").toString(), DeviceIdentifier.class);
        int type = jsonObject.getInt("type");

        ApiResult apiResult = ShakeAroundDeviceApi.searchRelation(deviceIdentifier, type);
        renderJson(Ret.ok().set("success", true).set("result", apiResult));
    }



}
